import pymysql
#设计数据库工具类
import logging
# from logging_use import init_log_config

class DBUtil():
    conn=None
    #创建链接
    @classmethod
    def __creat_conn(cls):
        if cls.conn is None:
            cls.conn=pymysql.connect(host='211.103.136.244', port=7061, user='student',
                           password='iHRM_student_2022', database='ihrm', charset='utf8')
        return cls.conn
    #关闭链接
    @classmethod
    def __close_conn(cls):
        if cls.conn is not None:
            cls.conn.close()
            cls.conn=None
    #设计工具里的方法
    #设计一个查询语句的通用方法
    @classmethod
    def select_one(cls,sql):
        curs=None
        one=None
        try:
            # 创建链接
            cls.conn = cls.__creat_conn()
            # 创建游标
            curs = cls.conn.cursor()
            logging.info(sql)
            # 执行sql,
            curs.execute(sql)
            # 获取结果集
            one = curs.fetchone()
        except Exception as err:
            # print(f"错误信息是：{err}")
            logging.error(err)
        finally:
            # 关闭游标
            curs.close()
            # 关闭链接
            cls.__close_conn()
            return one

    #设计一个增删改语句的通用方法
    @classmethod
    def uid_db(cls,sql):
        curs=None
        rows=None
        try:
            # 创建链接
            cls.conn = cls.__creat_conn()
            # 创建游标
            curs = cls.conn.cursor()
            logging.info(sql)
            # 执行sql
            curs.execute(sql)
            # 提交事务
            cls.conn.commit()
            rows=cls.conn.affected_rows()
        except Exception as err:
            # print(f"错误信息是：{err}")
            logging.error(err)
            cls.conn.rollback()
        finally:
            # 关闭游标
            curs.close()
            # 关闭链接
            cls.__close_conn()
            return f"影响行数是：{rows}"

